package main

import (
	"fmt"
	"os"
)

// 函数版学生管理系统

type student struct {
	id   int64
	name string
}

var (
	// 定义map,value是student指针
	allStudent map[int64]*student
)

func newStudent(id int64, name string) *student {
	return &student{
		id:   id,
		name: name,
	}
}

func showAll() {
	for k, v := range allStudent {
		fmt.Printf("学号:%d  姓名:%s\n", k, v.name)
	}
}

func add() {
	// 创建学生
	var (
		id   int64
		name string
	)
	fmt.Print("请输入学生学号:")
	fmt.Scanln(&id)
	fmt.Print("请输入学生姓名:")
	fmt.Scanln(&name)

	newStu := newStudent(id, name)
	// 添加到allStudent
	allStudent[id] = newStu
}
func del() {
	var (
		deleteId int64
	)
	fmt.Print("请输入要删除学生的序号:")
	fmt.Scanln(&deleteId)
	delete(allStudent, deleteId)
}

func main() {
	// 初始化所有学生
	allStudent = make(map[int64]*student, 50)
	for true {
		// 1、 打印菜单
		fmt.Println("欢迎光临学生管理系统!")
		fmt.Println(`	
		1. 查看所有学生
		2. 新增学生
		3. 删除学生
		4. 退出
		`)
		fmt.Println("请输入要执行操作:")
		// 2、等待用户选择
		var choice int
		fmt.Scanln(&choice)
		fmt.Printf("你选择了%d这个选项\n", choice)
		// 3、执行对应函数
		switch choice {
		case 1:
			showAll()
		case 2:
			add()
		case 3:
			del()
		case 4:
			os.Exit(1) // 退出
		default:
			fmt.Println("滚~")
		}
	}
}
